package com.jijuxie.system.service.impl;

import java.time.LocalDateTime;

import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jijuxie.system.domain.SysMessageTemplate;
import com.jijuxie.system.mapper.SysMessageTemplateMapper;
import com.jijuxie.system.service.ISysMessageTemplateService;

@Service
public class SysMessageTemplateServiceImpl extends ServiceImpl<SysMessageTemplateMapper, SysMessageTemplate>
        implements ISysMessageTemplateService {

    @Override
    public SysMessageTemplate getByCode(String code) {
        return lambdaQuery()
                .eq(SysMessageTemplate::getCode, code)
                .eq(SysMessageTemplate::getStatus, "0")
                .one();
    }

    @Override
    public void addTemplate(SysMessageTemplate template) {
        // 1. 参数校验
        if (template.getCode() == null || template.getTitle() == null || template.getContent() == null) {
            throw new IllegalArgumentException("模板编码、标题和内容不能为空");
        }

        // 2. 检查编码是否重复
        if (lambdaQuery().eq(SysMessageTemplate::getCode, template.getCode()).count() > 0) {
            throw new RuntimeException("模板编码已存在：" + template.getCode());
        }

        template.setCreateTime(LocalDateTime.now());
        template.setStatus("0");
        save(template);
    }

    @Override
    public void updateTemplate(SysMessageTemplate template) {
        template.setUpdateTime(LocalDateTime.now());
        updateById(template);
    }

    @Override
    public void deleteTemplate(Long templateId) {
        removeById(templateId);
    }

    @Override
    public void updateStatus(Long templateId, String status) {
        lambdaUpdate()
                .eq(SysMessageTemplate::getTemplateId, templateId)
                .set(SysMessageTemplate::getStatus, status)
                .set(SysMessageTemplate::getUpdateTime, LocalDateTime.now())
                .update();
    }
}
